The present invention relates generally to operand store compare (OSC) operations in a computer processor, and more specifically, to load queue entry reuse for OSC history table update.
Out-of-order execution of instructions in a processor allows performance improvements by improving execution pipeline resource utilization. However, out-of-order execution may cause data conflicts in load and store instructions. The process of examining store and load instructions to identify potential data conflicts is referred to as operand store compare (OSC). Two examples of data conflicts that may be detected by OSC are store-hit-load, in which a younger load instruction is executed out-of-order ahead of older store instruction to the same storage location, so that the younger load fetches stale data; and load-hit-store, in which a load instruction is issued in order after a store instruction to the same storage location, but because the store instruction may take longer to complete than the load instruction, the store data is not written back to the storage location before the load is executed and the store data is therefore not available for the load.
When a store-hit-load event occurs, the execution of the load instruction that triggered the store-hit-load, and any other instructions that are chronologically younger than the load instruction, need to be rolled back and repeated with the correct store data. This process, referred to as a flush, carries considerable penalties, since execution of multiple instructions needs to be repeated by the processor. When a load-hit-store event occurs, the load instruction needs to be repeated at a later time after the store data is available for the load, e.g., after the store data has been written back into the storage location. The penalty for a load-hit-store event is not as high as with store-hit-load event, but the load that triggered the load-hit-store event may need to be repeated multiple times before the store data becomes available, taking over execution slots that could be utilized for other instructions.